package com.hedl.practice.diyJava.network_programming.rmi.server;

import com.hedl.practice.diyJava.network_programming.rmi.service.WorldClock;
import com.hedl.practice.diyJava.network_programming.rmi.service.impl.WorldClockImpl;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

/**
 * 我们需要通过Java RMI提供的一系列底层支持接口，把上面编写的服务以RMI的形式暴露在网络上，客户端才能调用;
 * 主要目的是通过RMI提供的相关类，将我们自己的WorldClock实例注册到RMI服务上。
 * RMI的默认端口是1099，最后一步注册服务时通过rebind()指定服务名称为"WorldClock"。
 */
public class Server {
    public static void main(String[] args) throws RemoteException {
        System.out.println("create World clock remote service...");
        //实例化一个WorldClock
        WorldClock worldClock = new WorldClockImpl();
        //将此服务转换为远程服务接口
        WorldClock skeleton = (WorldClock) UnicastRemoteObject.exportObject(worldClock,0);
        //将RMI服务注册到1099端口
        Registry registry = LocateRegistry.createRegistry(1099);
        //注册此服务，服务名"WorldClock"
        registry.rebind("WorldClock",skeleton);
    }
}
